package com.zkjl.protect_business.service;


import com.zkjl.protect_business.dto.*;
import com.zkjl.protect_business.entity.User;
import com.zkjl.protect_business.vo.RouteVO;
import com.zkjl.protect_business.vo.UserOnlineVO;
import org.springframework.data.domain.PageImpl;

import java.util.List;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author jr
 * @since 2020-06-17
 */
public interface UserService  {

    /**
     * 新增用户
     * @param userDTO
     * @return
     */
    User save(UserDTO userDTO);

    /**
     * 用户列表
     * @param pageDTO
     * @return
     */
    PageImpl page(PageBaseDTO pageBaseDTO, SortDTO sortDTO);



    /**
     * 修改用户信息
     * @param id
     * @param userDTO
     * @return
     */
    User update(String id,UserDTO userDTO);


    /**
     * 获取用户信息
     * @param id
     * @return
     */
    User get(String id);


    /**
     * 修改密码
     *
     * @param updatePassWordDTO
     * @return
     */
    Boolean updatePassWord(UpdatePassWordDTO updatePassWordDTO);


    /**
     * 修改个人信息
     * @param updateUserDTO
     * @return
     */
    User updateMyInfo(UpdateUserDTO updateUserDTO);


    /**
     * 根据单位id获取用户信息
     * @param orgId
     * @return
     */
    User getByOrgId(String orgId);

    /**
     * 删除用户
     * @param id
     * @return
     */
    Boolean del(String id);


    /**
     * 修改机构下的用户所有机构名
     * @param orgId
     * @param orgName
     * @return
     */
    Boolean updateOrgInfo(String orgId,String orgName);

    /**
     * 获取用户拥有权限的路由
     *
     * @return
     */
    List<RouteVO> getUserRoute();

    /**
     * 获取机构下的用户在线列表
     * @param orgId
     * @return
     */
    List<UserOnlineVO> getUserOnlines(String orgId);


}
